In general, in a print system on an operating system (to be abbreviated as an OS hereinafter) which is running on an information processing apparatus, print information (generally called a GDI: Graphic Device Interface function) output from an application program such as document create software, image edit software, or the like is transmitted to a control code generation module (to be referred to as a printer driver hereinafter) as an abstract logical rendering request (generally called a DDI: Device Driver Interface function) via a graphic engine as an internal module of the OS. The printer driver interprets the logical rendering request, and generates a control code group complying with a specific format.
Normally, a printer driver which provides such function is installed on the OS as a software module, and can be used by all application programs which run on the OS. The printer driver provides a control code output function (print function) to all applications, which run on the information processing apparatus.
A control code group generated by the printer driver is transmitted to an output apparatus such as a printer, FAX, or the like via a system spooler of the OS, and is converted into a bitmap image that the user can visually recognize, by an internal rasterize module, thus outputting the bitmap image. Also, the control code group is rasterized by another program module, which can interpret the control codes and is running on the information processing apparatus, and can be displayed on a screen that the user operates. This program module is an application which edits a control code group generated by the printer driver, and combines control code groups of different print jobs, and such application will be referred to as a “print edit application” hereinafter.
Such print edit applications may often be able to interpret different control codes depending on their different internal algorithms or different hardware resources of active devices, even when a command system (command group) of control codes to be interpreted remains the same.
For example, assume that module A which edits and processes a given control code can only assure a maximum of 10,000 memory areas for image data embedded in a control code due to an insufficient hardware resource. At this time, when more than 10,000 image data are embedded in a control code, a memory assurance error occurs, and a process may be canceled.
On the other hand, another edit process module B can interpret more than 10,000 image data if it does not have the aforementioned limitation. That is, a control code that can be interpreted differs depending on edit process modules.
This problem may cause the following situation.
For example, if there are a plurality of edit process modules which can interpret a given common control code, a control code output from another module (printer driver) which outputs this common control code may be edited by an edit process module having the highest performance, but may not always be edited by an edit process module having the lowest performance. That is, a memory error or the like occurs depending on the performance of an edit process module, and the operation itself may be forcibly terminated.
As described above, in the current print system, the printer driver which is running on the OS is normally installed on the OS as a software module, and can be used by all application programs which run on the OS. Also, the printer driver provides a print function to all applications, which run on the information processing apparatus.
However, under the present circumstances, if a plurality of edit process modules, which recognize control codes output from the printer driver, are present on the information processing apparatus, it is impossible to recognize the characteristics of individual edit process modules, and to customize control codes. For example, a given printer driver outputs specific control codes, but these control codes cannot always be rendered by all edit process modules which recognize control codes. Also, when an edit process cannot executed by a given edit process module, a series of processes may be canceled.